package com.uls.lh.domain;

import java.util.Date;
import java.util.List;
import java.util.Objects;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.uls.hj.vo.TaskCommentVo;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.uls.common.annotation.Excel;
import com.uls.common.core.domain.BaseEntity;

/**
 * 用车申请管理对象 lh_carrequest
 * 
 * @author lh
 * @date 2024-11-11
 */
public class LhCarrequest extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 申请编号 */
    private Long requestId;

    /** 申请人ID（弱关联学生表） */
    @Excel(name = "申请人ID", readConverterExp = "弱=关联学生表")
    private Long studentId;

    /** 申请人姓名（冗余存储） */
    @Excel(name = "申请人姓名", readConverterExp = "冗=余存储")
    private String studentName;

    /** 车辆编号 */
    @Excel(name = "车辆编号")
    private Long carId;

    /** 指定的驾驶员编号 */
    @Excel(name = "指定的驾驶员编号")
    private Long driverId;

    /** 使用开始日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "使用开始日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startDate;

    /** 使用结束日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "使用结束日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endDate;

    /** 目的地 */
    @Excel(name = "目的地")
    private String destination;

    /** 用途 */
    @Excel(name = "用途")
    private String purpose;

    /** 申请状态：0 未提交 , 1 待审批，2 已拒绝，3 已批准 */
    @Excel(name = "申请状态：0 未提交 , 1 待审批，2 已拒绝，3 已批准")
    private Integer status;



    /**流程id*/
    private Long flowInstantId;
    public Long getFlowInstantId() {
        return flowInstantId;
    }

    public void setFlowInstantId(Long flowInstantId) {
        this.flowInstantId = flowInstantId;
    }


    //是否同意vo
    private Integer agree;

    public Integer getAgree() {
        return agree;
    }

    public void setAgree(Integer agree) {
        this.agree = agree;
    }

    //批注vo
    private String comment;
    public String getComment() {
        return comment;
    }

    public void setComment(String comment) {
        this.comment = comment;
    }
    //审批过程数据列表vo
    private List<TaskCommentVo> taskCommentVoList;

    public List<TaskCommentVo> getTaskCommentVoList() {
        return taskCommentVoList;
    }

    public void setTaskCommentVoList(List<TaskCommentVo> taskCommentVoList) {
        this.taskCommentVoList = taskCommentVoList;
    }

@Excel(name = "车辆型号")
    private String model;

    public String getModel() {
        return model;
    }

    public void setModel(String model) {
        this.model = model;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    /** 驾驶员姓名 */
    @Excel(name = "驾驶员姓名")
    private String name;












    public void setRequestId(Long requestId)
    {
        this.requestId = requestId;
    }

    public Long getRequestId() 
    {
        return requestId;
    }
    public void setStudentId(Long studentId) 
    {
        this.studentId = studentId;
    }

    public Long getStudentId() 
    {
        return studentId;
    }
    public void setStudentName(String studentName) 
    {
        this.studentName = studentName;
    }

    public String getStudentName() 
    {
        return studentName;
    }
    public void setCarId(Long carId) 
    {
        this.carId = carId;
    }

    public Long getCarId() 
    {
        return carId;
    }
    public void setDriverId(Long driverId) 
    {
        this.driverId = driverId;
    }

    public Long getDriverId() 
    {
        return driverId;
    }
    public void setStartDate(Date startDate) 
    {
        this.startDate = startDate;
    }

    public Date getStartDate() 
    {
        return startDate;
    }
    public void setEndDate(Date endDate) 
    {
        this.endDate = endDate;
    }

    public Date getEndDate() 
    {
        return endDate;
    }
    public void setDestination(String destination) 
    {
        this.destination = destination;
    }

    public String getDestination() 
    {
        return destination;
    }
    public void setPurpose(String purpose) 
    {
        this.purpose = purpose;
    }

    public String getPurpose() 
    {
        return purpose;
    }
    public void setStatus(Integer status) 
    {
        this.status = status;
    }

    public Integer getStatus() 
    {
        return status;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("requestId", getRequestId())
            .append("studentId", getStudentId())
            .append("studentName", getStudentName())
            .append("carId", getCarId())
            .append("driverId", getDriverId())
            .append("startDate", getStartDate())
            .append("endDate", getEndDate())
            .append("destination", getDestination())
            .append("purpose", getPurpose())
            .append("status", getStatus())
            .toString();
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof LhCarrequest)) return false;
        LhCarrequest that = (LhCarrequest) o;
        return Objects.equals(requestId, that.requestId) &&
                Objects.equals(studentId, that.studentId) &&
                Objects.equals(studentName, that.studentName) &&
                Objects.equals(carId, that.carId) &&
                Objects.equals(driverId, that.driverId) &&
                Objects.equals(startDate, that.startDate) &&
                Objects.equals(endDate, that.endDate) &&
                Objects.equals(destination, that.destination) &&
                Objects.equals(purpose, that.purpose) &&
                Objects.equals(status, that.status) &&
                Objects.equals(flowInstantId, that.flowInstantId) &&
                Objects.equals(agree, that.agree) &&
                Objects.equals(comment, that.comment) &&
                Objects.equals(taskCommentVoList, that.taskCommentVoList);
    }

    @Override
    public int hashCode() {
        return Objects.hash(requestId, studentId, studentName, carId, driverId, startDate, endDate, destination, purpose, status, flowInstantId, agree, comment, taskCommentVoList);
    }
}
